package com.stylefeng.guns.modular.pay.service;

import java.util.Map;

import com.stylefeng.guns.modular.pay.model.AllinMch;
import com.stylefeng.guns.modular.pay.model.WithdrawOrder;
import com.stylefeng.guns.modular.pay.payment.allin.common.api.ApiRsp;
import com.stylefeng.guns.modular.pay.payment.allin.common.api.MchConfig;
import com.stylefeng.guns.modular.pay.payment.allin.common.api.RpcSingleTranxReq;
import com.stylefeng.guns.modular.pay.payment.allin.common.api.RpcTransQueryReq;
import com.stylefeng.guns.modular.pay.payment.allin.common.entity.common.AipgRsp;
import com.stylefeng.guns.modular.pay.payment.allin.common.exception.AllInPayBizException;

/**
 * 通联代付业务接口
 * @author DevinYang
 * @date 2018年6月13日  
 *
 */
public interface AllInPayService {
	/**
	 * 通联批量代付
	 * @returnO
	 * @throws AllInPayBizException
	 */
	public Object batchTranx() throws AllInPayBizException;
	/**
	 * 单笔退款
	 * @return
	 * @throws AllInPayBizException
	 */
	public Object refundTranx() throws AllInPayBizException;
	
	/**
	 * 单笔实时代付哦
	 * @return
	 * @throws AllInPayBizException哦
	 */
	public ApiRsp singleTranx(RpcSingleTranxReq req,AllinMch config) throws AllInPayBizException;
	
	/**
	 * 查询
	 * @return
	 * @throws AllInPayBizException
	 */
	public ApiRsp queryTranx(RpcTransQueryReq req,AllinMch config) throws AllInPayBizException;
	
	/**
	 * 对账单下载
	 * @return
	 * @throws AllInPayBizException
	 */
	public Object downBills() throws AllInPayBizException;
	
	/**
	 * 签约通知
	 * @return
	 * @throws AllInPayBizException
	 */
	public Object signNotice() throws AllInPayBizException;
	
	/**
	 * 单笔实时身份验证
	 * @return
	 * @throws AllInPayBizException
	 */
	public Object singleAcctVerify() throws AllInPayBizException;
	
	/**
	 * 账户余额查询
	 * @return
	 * @throws AllInPayBizException
	 */
	public Object acctBalance() throws AllInPayBizException;
	
	
	public void notify(Map<String, String> params, WithdrawOrder order);
	
	
	
	

}
